home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs36.d81
/
vdcdemo.arc
/
VDCSOURCE.TXT
< prev
Wrap
Text File
|
2009-10-10
|
21KB
|
443 lines
1
2 * ┬Y ─ALE ╥AY
3 * ─.╥┴┘1 ON ╟┼NIE
4 * ─ALE ╥AY ON ╒╙ ┬╠╒┼╙ ┬┬╙
* (219) 762-4612 OR (219) 887-2206
5 * ╞IDO-╬ET 1:230/11
6
7 * ╓─├ PROGRAMMING
8 * INCLUDES ROUTINES TO SELECT
9 * A DIFFERENT SCREEN TO DISPLAY
10 * TO SAVE THE CONTENTS OF A WINDOW
11 * TO A BUFFER IN BANK ONE
12 * AND TO INITIALIZE 64K ╓─├ RAM
13
14 ╧╥╟ $1300
15
16 ╥┼┴─╥┼╟ = $├──┴
17 ╫╥╔╘┼╥┼╟ = $├─├├
18 ╙├╥╧╥╟ = $├├5┬
19 ╙├╘╧╨ = $┼5
20 ╙├╠╞ = $┼6
21 ├╠╥ = $51╞8
22 ╙╘┴╠╧╬╟ = $╞╞77
23 ╠─┴╠╧╬╟ = $╞╞74
24 ╔╬╔╘80 = $├┼0├
25
26 * ╘HESE ADDRESSES ARE USED BY THE SCREEN EDITOR
27 * TO DETERMINE WHERE TO WRITE IN ╓─├ MEMORY
28 * WHEN YOU PRINT ANYTHING.
29 * ╘HEY ARE NOT UPDATED WHEN YOU CHANGE THE ADDRESSES
30 * HELD IN THE VDC REGISTERS. ┘OU MUST CHANGE THESE
31 * YOURSELF. ╘HIS MAKES IT POSSIBLE TO BE WRITING
32 * TO A NON ACTIVE SCREEN.
33
34 ╓═3 = $┴2┼ ;STARTING PAGE VDC CHAR ADDRESS
35 ╓═4 = $┴2╞ ;STARTING PAGE VDC ATTR ADDRESS
36
37 * ╨OINTER TO BUFFER AREA TO STORE
38 * WINDOW CONTENTS
39
40 ╨╧╔╬╘╠╧ = $╞┴
41 ╨╧╔╬╘╚╔ = $╞┬
42
43 * THIS ROUTINE CHANGES THE ADDRESS
44 * THAT THE VDC CHIP ADDRESSES AS THE
45 * CURRENT DISPLAY
46 * CALL WITH SYS 4864,A
47 * A= THE HI BYTE OF THE VDC RAM ADDRESS
48 * YOU WANT TO BE ACTIVE
49
1300: 8─ ├╞ 14 50 ╙╘┴ ╙├┴──╥
1303: ┴2 0├ 51 ╠─╪ #$0├ ;SET REGISTER 12
1305: 20 ├├ ├─ 52 ╩╙╥ ╫╥╔╘┼╥┼╟
1308: ┴9 00 53 ╠─┴ #$00
130┴: ┼8 54 ╔╬╪ ;SET REG 13
130┬: 20 ├├ ├─ 55 ╩╙╥ ╫╥╔╘┼╥┼╟
130┼: ┴─ ├╞ 14 56 ╠─┴ ╙├┴──╥
1311: 18 57 ├╠├
1312: 69 08 58 ┴─├ #$08
1314: ┴2 14 59 ╠─╪ #$14 ;SET REGISTER 20
1316: 20 ├├ ├─ 60 ╩╙╥ ╫╥╔╘┼╥┼╟
1319: ┴9 00 61 ╠─┴ #$00
131┬: ┼8 62 ╔╬╪ ;SET REG 21
131├: 20 ├├ ├─ 63 ╩╙╥ ╫╥╔╘┼╥┼╟
131╞: 60 64 ╥╘╙
1320: ┼┴ 65 ╬╧╨
1321: ┼┴ 66 ╬╧╨
1322: ┼┴ 67 ╬╧╨
68
69 * ┬ECAUSE YOU MAY WANT TO WRITE TO A NON ACTIVE SCREEN
70 * THIS IS A SEPERATE ROUTINE. ┘OU CAN CHANGE THE ADDRESS
71 * HERE WITHOUT CHANGING THE VDC REGISTERS. ╘HE SYNTAX
72 * IS SYS 4899,A.
73 * A = HI BYTE OF VDC CHARACTER INFO
74 * IF YOU CHANGE THE VALUES IN THE ╓─├ REGISTERS
75 * THE SCREEN EDITOR WON'T PRINT ON THAT SCREEN
76 * UNTIL YOU RESET THESE ADDRESSES.
77
1323: 8─ 2┼ 0┴ 78 ╙╘┴ ╓═3
1326: 18 79 ├╠├
1327: 69 08 80 ┴─├ #$08
1329: 8─ 2╞ 0┴ 81 ╙╘┴ ╓═4
132├: 60 82 ╥╘╙
132─: ┼┴ 83 ╬╧╨
132┼: ┼┴ 84 ╬╧╨
132╞: ┼┴ 85 ╬╧╨
86
87 * MOVE STRING STORAGE HI POINT DOWN TO
88 * ALLOCATE BUFFER AREA IN BANK ONE
89 * FOR STORAGE OF WINDOW AREA CONTENTS
90 * ALSO PLACES HI AND LO BYTE OF BUFFER
91 * AREA INTO ┬╒╞╞╠╧ AND ┬╒╞╞╚╔
92 * THIS MUST BE CALLED BEFORE USING THE REST OF
93 * THE ROUTINE TO SET THE BUFFER AREA ADDRESS
94 * CALL WITH SYS 4912,A,X
95 * A=LO BYTE OF ADDRESS
96 * X=HI BYTE OF ADDRESS
97
1330: 85 39 98 ╙╘┴ $39
1332: 8─ ─┴ 14 99 ╙╘┴ ┬╒╞╞╠╧
1335: 86 3┴ 100 ╙╘╪ $3┴
1337: 8┼ ─┬ 14 101 ╙╘╪ ┬╒╞╞╚╔
133┴: 20 ╞8 51 102 ╩╙╥ ├╠╥
133─: 60 103 ╥╘╙
104
105 * THIS ROUTINE SAVES/RECALLS THE CONTENTS
106 * OF A WINDOW ON THE 80 COL SCREEN
107 * THE DATA IS STORED IN A BUFFER IN
108 * BANK ONE. CALL WITH SYS 4926,A
109 * IF A=0 THEN THE LAST WINDOW DEFINED
110 * WILL BE SAVED. IF A=1 THEN THE CONTENTS
111 * WILL BE RESTORED.
112
113 * ╞LAG FOR READ/WRITE
114
115 ╞╠┴╟ = $╞├ ;0 MEANS READ
116 ;1 MEANS WRITE
117
133┼: 85 ╞├ 118 ╙╘┴ ╞╠┴╟ ;SET FLAG BY MOVING ACC THERE
119
120 * THIS ROUTINE RESTORES THE POINTER TO THE BUFFER
121 * AREA TO THE START OF THE BUFFER EACH TIME
122 * THE ROUTINE IS CALLED
123
1340: ┴─ ─┴ 14 124 ╠─┴ ┬╒╞╞╠╧
1343: 85 ╞┴ 125 ╙╘┴ ╨╧╔╬╘╠╧
1345: ┴─ ─┬ 14 126 ╠─┴ ┬╒╞╞╚╔
1348: 85 ╞┬ 127 ╙╘┴ ╨╧╔╬╘╚╔
128
129 * CHECK FOR READ OR WRITE OPERATION
130
134┴: ┴9 00 131 ╠─┴ #$00 ;PUT ZERO IN ACC
134├: ├5 ╞├ 132 ├═╨ ╞╠┴╟ ;COMPARE THE ZERO TO FLAG
134┼: ╞0 04 133 ┬┼╤ ╙╘┴╥╘ ;IF ZERO THEN START ROUTINE
1350: 20 ╞2 13 134 ╩╙╥ ╥┼╙╘╧╥┼ ;IF NOT RESTORE WINDOW CONTENTS
1353: 60 135 ╥╘╙ ;RETURN WHEN DONE RESTORING
136
137 * ╟ET ├HARACTER AND ┴TTRIBUTE STARTING ADDRESS
138 * ╘HIS IS THE ADDRESS OF THE HOME POSITION WITH
139 * A FULL WINDOW
140
1354: ┴2 0├ 141 ╙╘┴╥╘ ╠─╪ #$0├ ;SELECT REGISTER 12
1356: 20 ─┴ ├─ 142 ╩╙╥ ╥┼┴─╥┼╟ ;READ HI BYTE OF CHAR ADDRESS
1359: 8─ ─0 14 143 ╙╘┴ ├╚┴╥╚╔ ;STORE HI BYTE
135├: ┴2 0─ 144 ╠─╪ #$0─ ;SELECT REGISTER 13
135┼: 20 ─┴ ├─ 145 ╩╙╥ ╥┼┴─╥┼╟ ;READ LO BYTE OF CHAR ADDRESS
1361: 8─ ─1 14 146 ╙╘┴ ├╚┴╥╠╧ ;STORE LO BYTE
147
1364: ┴2 14 148 ╠─╪ #$14 ;SELECT REGISTER 20
1366: 20 ─┴ ├─ 149 ╩╙╥ ╥┼┴─╥┼╟ ;READ HI BYTE OF ATTR ADDRESS
1369: 8─ ─2 14 150 ╙╘┴ ┴╘╘╥╚╔ ;STORE HI BYTE
136├: ┴2 15 151 ╠─╪ #$15 ;SELECT REGISTER 21
136┼: 20 ─┴ ├─ 152 ╩╙╥ ╥┼┴─╥┼╟ ;READ LO BYTE OF ATTR ADDRESS
1371: 8─ ─3 14 153 ╙╘┴ ┴╘╘╥╠╧ ;STORE LO BYTE
154
155 * ├OMPUTE STARTING ADDRESS OF CHARACTER AND ATTRIBUTE INFO
156 * FOR CURRENT WINDOW'S HOME POSITION
157 * ╘HIS SETS THE ADDRESSES TO THE START OF THE FIRST ROW
158 * OF THE WINDOW
159
1374: ┴9 00 160 ╠─┴ #$00 ;PUT ZERO IN ACCUMULATOR
1376: ├5 ┼5 161 ├═╨ ╙├╘╧╨ ;IF SCREEN TOP EQUALS ZERO THEN
1378: ╞0 30 162 ┬┼╤ ┴──├╧╠ ;SKIP ROW INCREMENTING
163
137┴: ┴2 00 164 ╠─╪ #$00 ;INITIALIZE COUNTER
137├: 18 165 ├╚┴╥╥╧╫ ├╠├ ;CLEAR CARRY
137─: ┴─ ─1 14 166 ╠─┴ ├╚┴╥╠╧
1380: 69 50 167 ┴─├ #$50 ;ADD DECIMAL 80 FOR EACH ROW
1382: 8─ ─1 14 168 ╙╘┴ ├╚┴╥╠╧ ;GREATER THAN 1 OF WINDOW
1385: ┴─ ─0 14 169 ╠─┴ ├╚┴╥╚╔ ;INCREMENT HI BYTE OF ADDRESS
1388: 69 00 170 ┴─├ #$00 ;IF CARRY SET
138┴: 8─ ─0 14 171 ╙╘┴ ├╚┴╥╚╔
138─: ┼8 172 ╔╬╪ ;INCREMENT COUNTER
138┼: ┼4 ┼5 173 ├╨╪ ╙├╘╧╨ ;IF COUNTER DOES NOT EQUAL THE
1390: ─0 ┼┴ 174 ┬╬┼ ├╚┴╥╥╧╫ ;SCREEN TOP VALUE THEN GO BACK
175 ;AND DO ANOTHER
176
1392: ┴2 00 177 ╠─╪ #$00 ;RESET COUNTER
1394: 18 178 ┴╘╘╥╥╧╫ ├╠├
1395: ┴─ ─3 14 179 ╠─┴ ┴╘╘╥╠╧
1398: 69 50 180 ┴─├ #$50
139┴: 8─ ─3 14 181 ╙╘┴ ┴╘╘╥╠╧
139─: ┴─ ─2 14 182 ╠─┴ ┴╘╘╥╚╔
13┴0: 69 00 183 ┴─├ #$00
13┴2: 8─ ─2 14 184 ╙╘┴ ┴╘╘╥╚╔
13┴5: ┼8 185 ╔╬╪
13┴6: ┼4 ┼5 186 ├╨╪ ╙├╘╧╨
13┴8: ─0 ┼┴ 187 ┬╬┼ ┴╘╘╥╥╧╫
188
189 * ╘HIS SETS THE ADDRESSES TO THE CORRECT COLUMN
190
13┴┴: ┴9 00 191 ┴──├╧╠ ╠─┴ #$00 ;ZERO IN ACCUMULATOR
13┴├: ├5 ┼6 192 ├═╨ ╙├╠╞ ;IF SCREEN LEFT EQUALS ZERO
13┴┼: ╞0 22 193 ┬┼╤ ╙╔┌┼ ;THEN SKIP THIS ROUTINE
194
13┬0: 18 195 ├╠├
13┬1: ┴─ ─1 14 196 ╠─┴ ├╚┴╥╠╧ ;GET LO BYTE
13┬4: 65 ┼6 197 ┴─├ ╙├╠╞ ;ADD COLUMN OFFSET
13┬6: 8─ ─1 14 198 ╙╘┴ ├╚┴╥╠╧ ;STORE NEW ADDRESS
13┬9: ┴─ ─0 14 199 ╠─┴ ├╚┴╥╚╔
13┬├: 69 00 200 ┴─├ #$00 ;ADD CARRY IF SET
13┬┼: 8─ ─0 14 201 ╙╘┴ ├╚┴╥╚╔
13├1: 18 202 ├╠├
13├2: ┴─ ─3 14 203 ╠─┴ ┴╘╘╥╠╧
13├5: 65 ┼6 204 ┴─├ ╙├╠╞
13├7: 8─ ─3 14 205 ╙╘┴ ┴╘╘╥╠╧
13├┴: ┴─ ─2 14 206 ╠─┴ ┴╘╘╥╚╔
13├─: 69 00 207 ┴─├ #$00
13├╞: 8─ ─2 14 208 ╙╘┴ ┴╘╘╥╚╔
209
210
211 * ─ETERMINE SCREEN SIZE IN ROWS AND COLS
212
13─2: 20 5┬ ├├ 213 ╙╔┌┼ ╩╙╥ ╙├╥╧╥╟ ;CALCULATE WINDOW SIZE
214 ;IN ROWS AND COLS
215 ;HAVE TO ADD 1 TO THE RESULT
216 ;BECAUSE THE ROW/COL #S
217 ;START WITH ZERO
13─5: ├8 218 ╔╬┘ ;
13─6: 8├ ─7 14 219 ╙╘┘ ╚┼╔╟╚╘ ;STORE # OF ROWS
13─9: ┼8 220 ╔╬╪ ;
13─┴: 8┼ ─6 14 221 ╙╘╪ ╫╔─╘╚ ;STORE # OF COLS
222
223
224 * SAVES WINDOW CONTENTS TO BUFFER
225
13──: 20 07 14 226 ╙┴╓┼ ╩╙╥ ╔╬╔╘ ;CALL INIT TO ZERO COUNTERS
227 ;AND POINTERS
13┼0: 20 16 14 228 ╩╙╥ ├╚┴╥ ;PUT ADDRESS OF CHAR INFO IN VDC
13┼3: 20 47 14 229 ╩╙╥ ╥┼┴─ ;READ CHAR INFO
13┼6: ┴9 00 230 ╠─┴ #$00 ;RESET DONE FLAG FOR ATTRIBUTE
13┼8: 8─ ─├ 14 231 ╙╘┴ ─╧╬┼ ;PASS THRU LOOP
13┼┬: 20 26 14 232 ╩╙╥ ┴╘╘╥ ;PUT ATTR ADDRESS INTO VDC
13┼┼: 20 47 14 233 ╩╙╥ ╥┼┴─ ;READ ATTR INFO
13╞1: 60 234 ╥╘╙ ;RETURN TO PROGRAM
235
236 * RESTORES WINDOW CONTENTS
237
13╞2: 20 07 14 238 ╥┼╙╘╧╥┼ ╩╙╥ ╔╬╔╘ ;ALMOST THE SAME AS ╙┴╓┼
13╞5: 20 16 14 239 ╩╙╥ ├╚┴╥
13╞8: 20 61 14 240 ╩╙╥ ╫╥╔╘┼
13╞┬: ┴9 00 241 ╠─┴ #$00
13╞─: 8─ ─├ 14 242 ╙╘┴ ─╧╬┼
1400: 20 26 14 243 ╩╙╥ ┴╘╘╥
1403: 20 61 14 244 ╩╙╥ ╫╥╔╘┼
1406: 60 245 ╥╘╙
246
247 * INITIALIZES ROWCOUNT, COLCOUNT, AND BUFFER POINTER
248
1407: ┴9 00 249 ╔╬╔╘ ╠─┴ #$00
1409: 8─ ─8 14 250 ╙╘┴ ╥╧╫├╧╒╬╘
140├: 8─ ─9 14 251 ╙╘┴ ├╧╠├╧╒╬╘
140╞: 8─ ─├ 14 252 ╙╘┴ ─╧╬┼
1412: ┴5 ╞┴ 253 ╠─┴ ╨╧╔╬╘╠╧
1414: ┴8 254 ╘┴┘
1415: 60 255 ╥╘╙
256
257 * PUTS CHAR ADDRESS INTO LOCATIONS USED
258 * BY READ/WRITE ROUTINES
259
1416: ┴─ ─0 14 260 ├╚┴╥ ╠─┴ ├╚┴╥╚╔
1419: 8─ ─4 14 261 ╙╘┴ ╓─├╚╔
141├: ┴─ ─1 14 262 ╠─┴ ├╚┴╥╠╧
141╞: 8─ ─5 14 263 ╙╘┴ ╓─├╠╧
1422: 20 36 14 264 ╩╙╥ ╒╨─┴╘┼
1425: 60 265 ╥╘╙
266
267 * PUTS ATTR ADDRESS INTO LOCATIONS USED
268 * BY READ/WRITE ROUTINES
269
1426: ┴─ ─2 14 270 ┴╘╘╥ ╠─┴ ┴╘╘╥╚╔
1429: 8─ ─4 14 271 ╙╘┴ ╓─├╚╔
142├: ┴─ ─3 14 272 ╠─┴ ┴╘╘╥╠╧
142╞: 8─ ─5 14 273 ╙╘┴ ╓─├╠╧
1432: 20 36 14 274 ╩╙╥ ╒╨─┴╘┼
1435: 60 275 ╥╘╙
276
277 * SEND ADDRESS CONTAINED IN
278 * VDCHI AND VDCLO TO VDC
279 * REGISTERS 18 AND 19
280
1436: ┴2 12 281 ╒╨─┴╘┼ ╠─╪ #$12 ;REG 18
1438: ┴─ ─4 14 282 ╠─┴ ╓─├╚╔
143┬: 20 ├├ ├─ 283 ╩╙╥ ╫╥╔╘┼╥┼╟
143┼: ┴2 13 284 ╠─╪ #$13 ;REG 19
1440: ┴─ ─5 14 285 ╠─┴ ╓─├╠╧
1443: 20 ├├ ├─ 286 ╩╙╥ ╫╥╔╘┼╥┼╟
1446: 60 287 ╥╘╙
288
289 * READS THE VDC INFO INTO THE BUFFER AREA
290
1447: ┴2 1╞ 291 ╥┼┴─ ╠─╪ #$1╞ ;SET REG 31
1449: 20 ─┴ ├─ 292 ╩╙╥ ╥┼┴─╥┼╟ ;GET VALUE FROM VDC RAM INTO ACC
144├: ┴2 ╞┴ 293 ╠─╪ #╨╧╔╬╘╠╧ ;PUT POINTER IN X REG
144┼: 8┼ ┬9 02 294 ╙╘╪ $2┬9 ;MOVE POINTER
1451: ┴2 01 295 ╠─╪ #$01 ;BANK NUMBER
1453: 20 77 ╞╞ 296 ╩╙╥ ╙╘┴╠╧╬╟ ;PUT BYTE THERE
297
1456: 20 78 14 298 ╩╙╥ ╘┼╙╘ ;GO DO OUR HOUSEKEEPING
299
1459: ┴9 01 300 ╠─┴ #$01 ;TEST TO SEE IF WE ARE THRU
145┬: ├─ ─├ 14 301 ├═╨ ─╧╬┼ ;
145┼: ─0 ┼7 302 ┬╬┼ ╥┼┴─ ;IF NOT GO GET ANOTHER BYTE
1460: 60 303 ╥╘╙ ;IF THRU GO BACK
304
305
306 * WRITES THE BUFFER BACK INTO THE VDC
307
1461: ┴9 ╞┴ 308 ╫╥╔╘┼ ╠─┴ #╨╧╔╬╘╠╧ ;SAME LOGIC AS ╥┼┴─
1463: ┴2 01 309 ╠─╪ #$01 ;EXCEPT THAT WE ARE SENDING DATA
1465: 20 74 ╞╞ 310 ╩╙╥ ╠─┴╠╧╬╟ ;TO THE VDC
1468: ┴2 1╞ 311 ╠─╪ #$1╞
146┴: 20 ├├ ├─ 312 ╩╙╥ ╫╥╔╘┼╥┼╟
313
146─: 20 78 14 314 ╩╙╥ ╘┼╙╘
315
1470: ┴9 01 316 ╠─┴ #$01
1472: ├─ ─├ 14 317 ├═╨ ─╧╬┼
1475: ─0 ┼┴ 318 ┬╬┼ ╫╥╔╘┼
1477: 60 319 ╥╘╙
320
321 * PREFORMS CHECKS FOR THE ╥┼┴─ AND ╫╥╔╘┼ ROUTINES
322
1478: ├8 323 ╘┼╙╘ ╔╬┘ ;INCREMENT POINTER
1479: ┼┼ ─9 14 324 ╔╬├ ├╧╠├╧╒╬╘ ;INCREMENT COLUMN COUNT
147├: ├├ ─┴ 14 325 ├╨┘ ┬╒╞╞╠╧ ;HAS Y ROLLED OVER TO = BUFFLO?
147╞: ─0 02 326 ┬╬┼ :┼╬─╥╧╫ ;IF NOT GOTO END OF ROW CHECK
1481: ┼6 ╞┬ 327 ╔╬├ $╞┬ ;IF Y HAS ROLLED OVER, THEN
328 ;WE INCREMENT THE HI BYTE
329 ;OF THE POINTER
330
1483: ┴─ ─6 14 331 :┼╬─╥╧╫ ╠─┴ ╫╔─╘╚ ;PUT WIDTH IN ACC
1486: ├─ ─9 14 332 ├═╨ ├╧╠├╧╒╬╘ ;COMPARE WITH WIDTH
1489: ─0 24 333 ┬╬┼ :╥┼╘╒╥╬ ;IF NOT DONE WITH THIS ROW
334 ;THEN GO BACK AND GET ANOTHER
335 ;CHARACTER
336
148┬: ┼┼ ─8 14 337 ╔╬├ ╥╧╫├╧╒╬╘ ;IF IT FALLS THRU THE ROW IS
DONE
148┼: ┴─ ─7 14 338 ╠─┴ ╚┼╔╟╚╘ ;PUT HEIGHT IN ACC
1491: ├─ ─8 14 339 ├═╨ ╥╧╫├╧╒╬╘ ;COMPARE WITH ROWCOUNT
1494: ╞0 1┴ 340 ┬┼╤ :┼╪╔╘ ;IF EQUAL WE ARE DONE
341
1496: ┴9 00 342 ╠─┴ #$00 ;WE WEREN'T DONE SO WE
1498: 8─ ─9 14 343 ╙╘┴ ├╧╠├╧╒╬╘ ;HAVE TO RESET THE COLUMN COUNT
344
149┬: 18 345 ├╠├ ;AND INCREMENT THE ADDRESS WE
ARE
149├: ┴9 50 346 ╠─┴ #$50 ;WE ARE READING FROM BY 80
149┼: 6─ ─5 14 347 ┴─├ ╓─├╠╧
14┴1: 8─ ─5 14 348 ╙╘┴ ╓─├╠╧
14┴4: ┴9 00 349 ╠─┴ #$00
14┴6: 6─ ─4 14 350 ┴─├ ╓─├╚╔
14┴9: 8─ ─4 14 351 ╙╘┴ ╓─├╚╔
14┴├: 20 36 14 352 ╩╙╥ ╒╨─┴╘┼ ;SEND THE NEXT ROWS START
ADDRESS
353 ;TO THE VDC CHIP
354
14┴╞: 60 355 :╥┼╘╒╥╬ ╥╘╙ ;GO BACK FOR ANOTHER ROW
356
14┬0: ┴9 00 357 :┼╪╔╘ ╠─┴ #$00 ;RESET THE COUNTERS TO ZERO
14┬2: 8─ ─8 14 358 ╙╘┴ ╥╧╫├╧╒╬╘ ;OR ELSE WHE WE COME BACK
14┬5: 8─ ─9 14 359 ╙╘┴ ├╧╠├╧╒╬╘ ;WE WILL KEEP READING
360 ;TIL THE COUNT WRAPS BACK
361
14┬8: ┴9 01 362 ╠─┴ #$01 ;PUT A ONE IN ─╧╬┼ SO
14┬┴: 8─ ─├ 14 363 ╙╘┴ ─╧╬┼ ;WE CAN TEST TO SEE IF WE
FINISHED
364 ;THIS PASS
14┬─: 60 365 ╥╘╙ ;GO BACK
14┬┼: ┼┴ 366 ╬╧╨
14┬╞: ┼┴ 367 ╬╧╨
14├0: ┼┴ 368 ╬╧╨
369
370 * RESETS ╓─├ CONFIGURATION FOR 64╦ MEMORY
371 * CALL WITH SYS 5313
372
14├1: ┴2 1├ 373 ╠─╪ #$1├ ;SET REG 28
14├3: 20 ─┴ ├─ 374 ╩╙╥ ╥┼┴─╥┼╟ ;READ CURRENT VALUE
14├6: 09 10 375 ╧╥┴ #$10 ;SET BIT 4, IF NOT SET ALREADY
14├8: 20 ├├ ├─ 376 ╩╙╥ ╫╥╔╘┼╥┼╟ ;WRITE IT BACK
14├┬: 20 0├ ├┼ 377 ╩╙╥ ╔╬╔╘80 ;REINITIALIZE CHARACTER SET
14├┼: 60 378 ╥╘╙
379
380 * DATA STORAGE
381
382 ─┴╘┴
383
384 ─╒═ ─┴╘┴ ;DATA LOCATIONS
385
14├╞: 00 386 ╙├┴──╥ ─╞┬ 0
14─0: 00 387 ├╚┴╥╚╔ ─╞┬ 0
14─1: 00 388 ├╚┴╥╠╧ ─╞┬ 0
14─2: 00 389 ┴╘╘╥╚╔ ─╞┬ 0
14─3: 00 390 ┴╘╘╥╠╧ ─╞┬ 0
14─4: 00 391 ╓─├╚╔ ─╞┬ 0
14─5: 00 392 ╓─├╠╧ ─╞┬ 0
14─6: 00 393 ╫╔─╘╚ ─╞┬ 0
14─7: 00 394 ╚┼╔╟╚╘ ─╞┬ 0
14─8: 00 395 ╥╧╫├╧╒╬╘ ─╞┬ 0
14─9: 00 396 ├╧╠├╧╒╬╘ ─╞┬ 0
14─┴: 00 397 ┬╒╞╞╠╧ ─╞┬ 0
14─┬: 00 398 ┬╒╞╞╚╔ ─╞┬ 0
14─├: 00 399 ─╧╬┼ ─╞┬ 0
400
401 ─┼╬─
--┼ND ═ERLIN-128 ASSEMBLY, 463 BYTES, ┼RRORS: 0
╙YMBOL TABLE - ALPHABETICAL ORDER:
┴──├╧╠ =$13┴┴ ┴╘╘╥ =$1426 ┴╘╘╥╚╔ =$14─2 ┴╘╘╥╠╧ =$14─3
┴╘╘╥╥╧╫ =$1394 ┬╒╞╞╚╔ =$14─┬ ┬╒╞╞╠╧ =$14─┴ ├╚┴╥ =$1416
├╚┴╥╚╔ =$14─0 ├╚┴╥╠╧ =$14─1 ├╚┴╥╥╧╫ =$137├ ├╠╥ =$51╞8
├╧╠├╧╒╬╘=$14─9 ─┴╘┴ =$14├╞ ─╧╬┼ =$14─├ ╞╠┴╟ =$╞├
╚┼╔╟╚╘ =$14─7 ╔╬╔╘ =$1407 ╔╬╔╘80 =$├┼0├ ╠─┴╠╧╬╟ =$╞╞74
╨╧╔╬╘╚╔ =$╞┬ ╨╧╔╬╘╠╧ =$╞┴ ╥┼┴─ =$1447 ╥┼┴─╥┼╟ =$├──┴
╥┼╙╘╧╥┼ =$13╞2 ╥╧╫├╧╒╬╘=$14─8 ? ╙┴╓┼ =$13── ╙├┴──╥ =$14├╞
╙├╠╞ =$┼6 ╙├╥╧╥╟ =$├├5┬ ╙├╘╧╨ =$┼5 ╙╔┌┼ =$13─2
╙╘┴╠╧╬╟ =$╞╞77 ╙╘┴╥╘ =$1354 ╘┼╙╘ =$1478 ╒╨─┴╘┼ =$1436
╓─├╚╔ =$14─4 ╓─├╠╧ =$14─5 ╓═3 =$0┴2┼ ╓═4 =$0┴2╞
╫╔─╘╚ =$14─6 ╫╥╔╘┼ =$1461 ╫╥╔╘┼╥┼╟=$├─├├
╙YMBOL TABLE - NUMERICAL ORDER:
╙├╘╧╨ =$┼5 ╙├╠╞ =$┼6 ╨╧╔╬╘╠╧ =$╞┴ ╨╧╔╬╘╚╔ =$╞┬
╞╠┴╟ =$╞├ ╓═3 =$0┴2┼ ╓═4 =$0┴2╞ ╙╘┴╥╘ =$1354
├╚┴╥╥╧╫ =$137├ ┴╘╘╥╥╧╫ =$1394 ┴──├╧╠ =$13┴┴ ╙╔┌┼ =$13─2
? ╙┴╓┼ =$13── ╥┼╙╘╧╥┼ =$13╞2 ╔╬╔╘ =$1407 ├╚┴╥ =$1416
┴╘╘╥ =$1426 ╒╨─┴╘┼ =$1436 ╥┼┴─ =$1447 ╫╥╔╘┼ =$1461
╘┼╙╘ =$1478 ─┴╘┴ =$14├╞ ╙├┴──╥ =$14├╞ ├╚┴╥╚╔ =$14─0
├╚┴╥╠╧ =$14─1 ┴╘╘╥╚╔ =$14─2 ┴╘╘╥╠╧ =$14─3 ╓─├╚╔ =$14─4
╓─├╠╧ =$14─5 ╫╔─╘╚ =$14─6 ╚┼╔╟╚╘ =$14─7 ╥╧╫├╧╒╬╘=$14─8
├╧╠├╧╒╬╘=$14─9 ┬╒╞╞╠╧ =$14─┴ ┬╒╞╞╚╔ =$14─┬ ─╧╬┼ =$14─├
├╠╥ =$51╞8 ╙├╥╧╥╟ =$├├5┬ ╫╥╔╘┼╥┼╟=$├─├├ ╥┼┴─╥┼╟ =$├──┴
╔╬╔╘80 =$├┼0├ ╠─┴╠╧╬╟ =$╞╞74 ╙╘┴╠╧╬╟ =$╞╞77